Core.Test.registerTest({
	group: "utils",
	name: "Object.merge()",
	
	"Should merge two objects with different properties": function() {
		var objectA = {keyA: "string"},
			objectB = {keyB: 10};
		
		Assert.equal({keyA: "string", keyB: 10}, Object.merge(objectA, objectB));
	},
	
	"Should merge three objects": function() {
		var objectA = {keyA: "string"},
			objectB = {keyB: 10},
			objectC = {keyC: true};
		
		Assert.equal({keyA: "string", keyB: 10, keyC: true}, Object.merge(objectA, objectB, objectC));
	},
	
	"Should merge if one of the objects doesn't exist": function() {
		var objectA = {keyA: "string"},
			objectC = {keyC: true};

		Assert.equal({keyA: "string", keyC: true}, Object.merge(objectA,undefined, objectC));
	},
	
	"Should merge two objects with conflicting properties": function() {
		var objectA = {keyA: "string", keyB: 11},
			objectB = {keyA: 10};
		
		Assert.equal({keyA: 10, keyB: 11}, Object.merge(objectA, objectB));
	},
	
	"Should produce shallow copy of the object": function() {
		var obj = {keyA: "string", keyB: 11, inner: {keyC: "string"}},
			copy = Object.clone(obj);
		
		Assert.no(obj === copy);
		Assert.equal(obj, copy);
	}
});